<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Data Structures for Sets and Graphs: datastruct/BitMapDirectlyAddressedSet.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Data Structures for Sets and Graphs
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_f9af7c4329e6f916a6a58dc83cbb7ef1.html">datastruct</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">BitMapDirectlyAddressedSet.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="BitMapDirectlyAddressedSet_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * BitMapAddressedSet.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *  Created on: 18/09/2012</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *      Author: marcio</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef BITMAPDIRECTLYADDRESSEDSET_H_</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define BITMAPDIRECTLYADDRESSEDSET_H_</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="DirectlyAddressedSet_8h.html">DirectlyAddressedSet.h</a>&quot;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BitTools_8h.html">BitTools.h</a>&quot;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Hash_8h.html" title="An interface to access the perfect hashing package cmph.">Hash.h</a>&quot;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="classFilter.html">   25</a></span>&#160;<span class="keyword">class </span><a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter</a> {</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classFilter.html#a46a62eaa8a4877deff565f588265cd0c">   32</a></span>&#160;        <a class="code" href="classFilter.html#a46a62eaa8a4877deff565f588265cd0c" title="Constructor of a filter whose elements are described by a vEBTree.">Filter</a>() {};</div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classFilter.html#adda3dc313ae570ae974401a5dd5d3875">   36</a></span>&#160;        <span class="keyword">virtual</span> <a class="code" href="classFilter.html#adda3dc313ae570ae974401a5dd5d3875" title="Destructor.">~Filter</a>() {};</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classFilter.html#a6672c0280ca5d85642c550ba29e468f2" title="Performs the filtering of the specified word.">filter</a>(T * res, <span class="keyword">const</span> T * w1, <span class="keyword">const</span> T * w2) <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;};</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classAndFilter.html">   53</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAndFilter.html" title="Filter for thelogic operation and.">AndFilter</a> : <span class="keyword">public</span> <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter</a>&lt;T&gt; {</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classAndFilter.html#a69848e71d0901aad9af6058494859042">   55</a></span>&#160;        <a class="code" href="classAndFilter.html#a69848e71d0901aad9af6058494859042">AndFilter</a>() {};</div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classAndFilter.html#a62f7c184aa6accb3bf81459c50130785">   56</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classAndFilter.html#a62f7c184aa6accb3bf81459c50130785" title="Performs the filtering of the specified word.">filter</a>(T * res, <span class="keyword">const</span> T * w1, <span class="keyword">const</span> T * w2)<span class="keyword"> const </span>{ *res = *w1 &amp; *w2; };</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;};</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classOrFilter.html">   65</a></span>&#160;<span class="keyword">class </span><a class="code" href="classOrFilter.html" title="Filter for the logic operation or.">OrFilter</a> : <span class="keyword">public</span> <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter</a>&lt;T&gt; {</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classOrFilter.html#af4b125eedbffc380e4cd5edd48bbcec1">   67</a></span>&#160;        <a class="code" href="classOrFilter.html#af4b125eedbffc380e4cd5edd48bbcec1">OrFilter</a>() {};</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="classOrFilter.html#a4834e61c0468d9af257579332b5def78">   68</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classOrFilter.html#a4834e61c0468d9af257579332b5def78" title="Performs the filtering of the specified word.">filter</a>(T * res, <span class="keyword">const</span> T * w1, <span class="keyword">const</span> T * w2)<span class="keyword"> const </span>{ *res = *w1 | *w2; };</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;};</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classXorFilter.html">   77</a></span>&#160;<span class="keyword">class </span><a class="code" href="classXorFilter.html" title="Filter for the logic operation xor.">XorFilter</a> : <span class="keyword">public</span> <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter</a>&lt;T&gt; {</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classXorFilter.html#af47efac88db167f1556711bf8e3cfd74">   79</a></span>&#160;        <a class="code" href="classXorFilter.html#af47efac88db167f1556711bf8e3cfd74">XorFilter</a>() {};</div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classXorFilter.html#ad10138ef7723a735e8767e0e160b007d">   80</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classXorFilter.html#ad10138ef7723a735e8767e0e160b007d" title="Performs the filtering of the specified word.">filter</a>(T * res, <span class="keyword">const</span> T * w1, <span class="keyword">const</span> T * w2)<span class="keyword"> const </span>{ *res = *w1 ^ *w2; };</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;};</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classAndNegFilter.html">   89</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAndNegFilter.html" title="Filter for the logic operation and of the first parameter and the negation of the second parameter...">AndNegFilter</a> : <span class="keyword">public</span> <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter</a>&lt;T&gt; {</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="classAndNegFilter.html#ab1d6c199ef8f09dfcb788eaeaa95ac51">   91</a></span>&#160;        <a class="code" href="classAndNegFilter.html#ab1d6c199ef8f09dfcb788eaeaa95ac51">AndNegFilter</a>() {};</div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="code" href="classAndNegFilter.html#af023c7e4ee3b5607a6011c7b2bbd9aa4">   92</a></span>&#160;        <span class="keywordtype">void</span> <a class="code" href="classAndNegFilter.html#af023c7e4ee3b5607a6011c7b2bbd9aa4" title="Performs the filtering of the specified word.">filter</a>(T * res, <span class="keyword">const</span> T * w1, <span class="keyword">const</span> T * w2)<span class="keyword"> const </span>{ *res = *w1 &amp; ~(*w2); };</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;};</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html">  111</a></span>&#160;<span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a> : <span class="keyword">public</span> <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a>, <span class="keyword">protected</span> <a class="code" href="classBitTools.html">BitTools</a>&lt;T&gt; {</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSets.html">BitMapDirectlyAddressedSets</a>;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html">  119</a></span>&#160;        <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> : <span class="keyword">public</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>, <span class="keyword">protected</span> <a class="code" href="classBitTools.html">BitTools</a>&lt;T&gt; {</div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#addfbcbb579a25246d437be11e22ad72b">  120</a></span>&#160;                <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#ae5e90fcbbe64b3f2c5d2bb0e8fec51e8">  122</a></span>&#160;                T *                                     <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#ae5e90fcbbe64b3f2c5d2bb0e8fec51e8" title="current node">node</a>;           </div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a9d512727d57933bc47af910ddfe0933d">  123</a></span>&#160;                <span class="keywordtype">long</span>                            <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a9d512727d57933bc47af910ddfe0933d" title="index of the node in the array">inode</a>;          </div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a2108777a0c43ce84d14fcdf890ebff39">  124</a></span>&#160;                <span class="keywordtype">long</span>                            <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a2108777a0c43ce84d14fcdf890ebff39" title="first value in the current node">dspl</a>;           </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a53118dae2aaf215083ac91e88afdca3a">  125</a></span>&#160;                <span class="keywordtype">long</span>                            <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a53118dae2aaf215083ac91e88afdca3a" title="cursor position in the current node">cursor</a>;         </div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a8e469697fb3f73db53b5771e33147b89">  127</a></span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">const</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a8e469697fb3f73db53b5771e33147b89" title="the enclosing BitMapDirectlyAddressedSet&lt;T&gt;, which gives access to BitMapDirectlyAddressedSet&lt;T&gt;::tre...">t</a>;        </div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#adbb1ade85b8730341245715b409ab826" title="A constructor for a specified enclosed BitMapDirectlyAddressedSet&lt;T&gt;.">BitMapIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a8e469697fb3f73db53b5771e33147b89" title="the enclosing BitMapDirectlyAddressedSet&lt;T&gt;, which gives access to BitMapDirectlyAddressedSet&lt;T&gt;::tre...">t</a>);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;                <span class="comment">//destructor</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a922788ac3a384d2c80e55d643f129438">~BitMapIterator</a>();</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a70f25a8f961d2beffe72c019f6c74f55" title="Generic implementation for bitmaps.">restartFrom</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;                <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#ac020243089a5555e40cc7f8457405c5e" title="Generic implementation for bitmaps.">next</a>();</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a32961844f00ab60edb5b3a2caf3ac9a5" title="Generic implementation for bitmaps.">nextUpTo</a>(<span class="keywordtype">long</span> to);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        };</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div>
<div class="line"><a name="l00176"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html">  176</a></span>&#160;        <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html">FilteredBitMapIterator</a> : <span class="keyword">public</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> {</div>
<div class="line"><a name="l00177"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#addfbcbb579a25246d437be11e22ad72b">  177</a></span>&#160;                <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>;</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        <span class="keyword">private</span> :</div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a8971a9a7c9f5f05d62d3b6ca8d42560d">  180</a></span>&#160;                <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter&lt;T&gt;</a> *                     <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a8971a9a7c9f5f05d62d3b6ca8d42560d" title="the filter">f</a>;              </div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#ac61ba7459bcf675d85569e64c1bcf67b">  181</a></span>&#160;                <span class="keyword">const</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> *  <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#ac61ba7459bcf675d85569e64c1bcf67b" title="the BitMapDirectlyAddressedSet&lt;T&gt; used to filter">fiter</a>;  </div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a9054efeb9069c6bcf257525294272dc8">  182</a></span>&#160;                T                                               <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a9054efeb9069c6bcf257525294272dc8" title="filtered node">fnode</a>;  </div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a756e088dcf32b85a7e4818612eef8497">FilteredBitMapIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">set</span>, <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> * <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#ac61ba7459bcf675d85569e64c1bcf67b" title="the BitMapDirectlyAddressedSet&lt;T&gt; used to filter">fiter</a>, <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter&lt;T&gt;</a> * fil);</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a53265def8ad4a46af78eaae3b9444ebb">  189</a></span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a53265def8ad4a46af78eaae3b9444ebb">~FilteredBitMapIterator</a>(){};</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a13d46e202098ded96d1de860520088ec" title="Generic implementation for bitmaps.">restartFrom</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#ac1c14fba56789e4e228f14cbf87fe144" title="Generic implementation for bitmaps.">nextUpTo</a>(<span class="keywordtype">long</span> to);</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        };</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html">  195</a></span>&#160;        <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html">ComplIterator</a> : <span class="keyword">public</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> {</div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#addfbcbb579a25246d437be11e22ad72b">  196</a></span>&#160;                <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        <span class="keyword">private</span> :</div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a8f306e0807c022db75d4943c98a1f222">  199</a></span>&#160;                T <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a8f306e0807c022db75d4943c98a1f222" title="complement of current node">cnode</a>;                                </div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a720e3d19917908e43d7c02388767c2c7">ComplIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">set</span>);</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        <span class="keyword">public</span>:</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;                <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a015fae10b30c3bd4885823166a394909">~ComplIterator</a>();</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a8410806452c612472d23fdc7ca1ed5a6" title="Generic implementation for bitmaps.">restartFrom</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#ac5b6acf44ba8694204286383bbdcd6a3" title="Generic implementation for bitmaps.">nextUpTo</a>(<span class="keywordtype">long</span> to);</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        };</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div>
<div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a1e76fedb462f45a3755792fa5ed656e8">  212</a></span>&#160;        <span class="keywordtype">long</span>    <a class="code" href="classBitMapDirectlyAddressedSet.html#a1e76fedb462f45a3755792fa5ed656e8">sizeT</a>;  <span class="comment">//&lt;! the size of the bitmap, in words</span></div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        <span class="keyword">virtual</span> T * <a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(<span class="keywordtype">long</span> i) <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;         <a class="code" href="classBitMapDirectlyAddressedSet.html#a99e93d7a2081455dc5c4b201cd7405f6" title="A simple constructor.">BitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>);</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;         <a class="code" href="classBitMapDirectlyAddressedSet.html#a4fa7b12ff3c5ca64ea9c4048dda98754" title="The simple destructor.">~BitMapDirectlyAddressedSet</a>();</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#a17a8959c7a96ae90a755f7106ff06093" title="Create a copy of the current object.">clone</a>() <span class="keyword">const</span> = 0;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d" title="Starts a new iterator for this set.">newIterator</a>();</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#adfd95747fa6f3852640b6f291a515d5f" title="An Iterator for the complement of the set represented by the object.">newComplIterator</a>();</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d" title="Starts a new iterator for this set.">newIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * d, <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter&lt;T&gt;</a> * f);</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a304b510e345a395c13f1fdfcbef160e2" title="Adds the specified key to the set.">toSet</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#aa084b0ee63e53920d9cfa662feb3ffeb" title="Removes the specified key from the set.">toCompl</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a8bacc011da032898e445e0bd41dc5f14" title="Swap a element between the set and the complement.">flip</a>(<span class="keywordtype">long</span> i);</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#aae0d63c2cf0f6dbf65657448b14287b5" title="Verify if a element of the universe is in the set.">isInSet</a>(<span class="keywordtype">long</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">char</span> * <a class="code" href="classBitMapDirectlyAddressedSet.html#a8e4dd512b40fdada85967c663480878f" title="Create a vector of the elements in the set.">toArray</a>(<span class="keywordtype">long</span>* size) = 0;</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a1886374dcac4d2468c71c98aea3f2f06" title="Add all the elements in the universe to the set.">allToSet</a>() = 0;</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a98721fe36c0309b662f0a4053b8c10b3" title="Remove all the elements of the set.">allToCompl</a>() = 0;</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a3dc0ff33cdfede898cfd29d10caa0ad6" title="The complement of the current set.">flipAll</a>() = 0;</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a781346a0534bce876e240cb2cc92d0ac" title="Adds to this set all the elements in the union of two specified sets.">unionOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w);</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a8ab9c444519d40684247c4bc3c1be4cc" title="Adds to this set all the elements in the symmetric difference of two specified sets.">symDiffOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w);</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a711f4b377ff461e9773b2a3eabcf89af" title="Adds to this set all the elements in the intersection of two specified sets.">intersectOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w);</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a31d1c87fec3e523b241595d4cb73a808" title="Adds to this set all the elements in the difference of two specified sets.">diffOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w);</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;         <span class="comment">//DEBUG</span></div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a0b1150e706365effaf3bf4d25f1f88eb">show</a>();</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;};</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00389"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a99e93d7a2081455dc5c4b201cd7405f6">  389</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a99e93d7a2081455dc5c4b201cd7405f6" title="A simple constructor.">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>) : <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a>(u) {</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <a class="code" href="classBitMapDirectlyAddressedSet.html#a1e76fedb462f45a3755792fa5ed656e8">sizeT</a> = (u + this-&gt;<a class="code" href="classBitTools.html#acf7ff71b956d4be998a44c46ad2aafa2" title="number of bits of a word">word_size</a> - 1) &gt;&gt; this-&gt;<a class="code" href="classBitTools.html#a0fe1acc3156ee09ecd71da226484f638" title="logarithmic of the size, in bits, of a word">logb</a>;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;}</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00394"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a4fa7b12ff3c5ca64ea9c4048dda98754">  394</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a4fa7b12ff3c5ca64ea9c4048dda98754" title="The simple destructor.">BitMapDirectlyAddressedSet&lt;T&gt;::~BitMapDirectlyAddressedSet</a>() {</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;}</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00398"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#adbb1ade85b8730341245715b409ab826">  398</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#adbb1ade85b8730341245715b409ab826" title="A constructor for a specified enclosed BitMapDirectlyAddressedSet&lt;T&gt;.">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapIterator::BitMapIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * t) : <a class="code" href="classBitTools.html">BitTools</a>&lt;T&gt;(), t(t) {</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html#ae4eb65beabbaa126db89529f3d3e2f3a" title="Restarts the enumeration.">restart</a>();</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;}</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a922788ac3a384d2c80e55d643f129438">  403</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapIterator::~BitMapIterator</a>() {};</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00406"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a70f25a8f961d2beffe72c019f6c74f55">  406</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapIterator::restartFrom</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        cursor = this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i);</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        inode = this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i);</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        node = t-&gt;arrayNode(inode);</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        dspl = i - cursor;</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;        <span class="keywordflow">if</span> ((*node &amp; (1LL &lt;&lt; cursor)) == 0x00) {</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;                cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(*node, cursor);</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;                <span class="keywordflow">while</span> (cursor &lt; 0 &amp;&amp; dspl &lt; <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>) {</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;                        dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                        node = t-&gt;arrayNode(++inode);</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                        cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(*node);</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;                }</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        }</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;}</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00422"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#ac020243089a5555e40cc7f8457405c5e">  422</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapIterator::next</a>() {</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        <span class="keywordflow">return</span> nextUpTo(<a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>);</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;}</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00427"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html#a32961844f00ab60edb5b3a2caf3ac9a5">  427</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::BitMapIterator::nextUpTo</a>(<span class="keywordtype">long</span> to) {</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;        <span class="keywordtype">long</span> ret = dspl + cursor;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(*node, cursor);</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordflow">if</span> (cursor &lt; 0) {</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                <span class="keywordflow">while</span> (cursor &lt; 0 &amp;&amp; dspl &lt; to) {</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                        dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                        node = t-&gt;arrayNode(++inode);</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                        cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(*node);</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                }</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                <span class="keywordflow">if</span> (cursor &lt; 0)</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                        cursor = 0;</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        }</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;}</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00444"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a756e088dcf32b85a7e4818612eef8497">  444</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::FilteredBitMapIterator::FilteredBitMapIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">set</span>, <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a> * fiter, <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter&lt;T&gt;</a> * fil) : <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a>(set), fiter(fiter), f(fil) {</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;}</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00448"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#a13d46e202098ded96d1de860520088ec">  448</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::FilteredBitMapIterator::restartFrom</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        this-&gt;cursor = this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i);</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        this-&gt;inode = this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i);</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        this-&gt;dspl = i - this-&gt;cursor;</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        f-&gt;filter(&amp;fnode, this-&gt;t-&gt;arrayNode(this-&gt;inode), fiter-&gt;t-&gt;arrayNode(this-&gt;inode));</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        <span class="keywordflow">if</span> ((fnode &amp; (1LL &lt;&lt; this-&gt;cursor)) == 0x00) {</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                this-&gt;cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(fnode, this-&gt;cursor);</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                <span class="keywordflow">while</span> (this-&gt;cursor &lt; 0 &amp;&amp; this-&gt;dspl &lt; <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>) {</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                        this-&gt;dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                        f-&gt;filter(&amp;fnode, this-&gt;t-&gt;arrayNode(++this-&gt;inode), fiter-&gt;t-&gt;arrayNode(this-&gt;inode));</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                        this-&gt;cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(fnode);</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;                }</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        }</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;}</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00465"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html#ac1c14fba56789e4e228f14cbf87fe144">  465</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::FilteredBitMapIterator::nextUpTo</a>(<span class="keywordtype">long</span> to) {</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;        <span class="keywordtype">long</span> ret = this-&gt;dspl + this-&gt;cursor;</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;        this-&gt;cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(fnode, this-&gt;cursor);</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;        <span class="keywordflow">if</span> (this-&gt;cursor &lt; 0) {</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                <span class="keywordflow">while</span> (this-&gt;cursor &lt; 0 &amp;&amp; this-&gt;dspl &lt; to) {</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                        this-&gt;dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                        f-&gt;filter(&amp;fnode, this-&gt;t-&gt;arrayNode(++this-&gt;inode), fiter-&gt;t-&gt;arrayNode(this-&gt;inode));</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                        this-&gt;cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(fnode);</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;                }</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                <span class="keywordflow">if</span> (this-&gt;cursor &lt; 0)</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;                        this-&gt;cursor = 0;</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        }</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;}</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00482"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a720e3d19917908e43d7c02388767c2c7">  482</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::ComplIterator::ComplIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * t) : <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">Iterator</a>(t) {</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;}</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00486"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a015fae10b30c3bd4885823166a394909">  486</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::ComplIterator::~ComplIterator</a>() {};</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00489"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#a8410806452c612472d23fdc7ca1ed5a6">  489</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::ComplIterator::restartFrom</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;        this-&gt;cursor = this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i);</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;        this-&gt;inode = this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i);</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        cnode = ~(*this-&gt;t-&gt;arrayNode(this-&gt;inode));</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;        this-&gt;dspl = i - this-&gt;cursor;</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        <span class="keywordflow">if</span> ((cnode &amp; (1LL &lt;&lt; this-&gt;cursor)) == 0x00) {</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;                this-&gt;cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(cnode, this-&gt;cursor);</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;                <span class="keywordflow">while</span> (this-&gt;cursor &lt; 0 &amp;&amp; this-&gt;dspl &lt; <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>) {</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                        this-&gt;dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;                        cnode = ~(*this-&gt;t-&gt;arrayNode(++this-&gt;inode));</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;                        this-&gt;cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(cnode);</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;                }</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        }</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;}</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00505"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html#ac5b6acf44ba8694204286383bbdcd6a3">  505</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;::ComplIterator::nextUpTo</a>(<span class="keywordtype">long</span> to) {</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        <span class="keywordtype">long</span> ret = this-&gt;dspl + this-&gt;cursor;</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        this-&gt;cursor = <a class="code" href="classBitTools.html#a6955692f32764e20095546bc66dc39ac">builtinNextLeast</a>(cnode, this-&gt;cursor);</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        <span class="keywordflow">if</span> (this-&gt;cursor &lt; 0) {</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;                <span class="keywordflow">while</span> (this-&gt;cursor &lt; 0 &amp;&amp; this-&gt;dspl &lt; to) {</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;                        this-&gt;dspl += <span class="keyword">sizeof</span>(T);</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;                        cnode = ~(*this-&gt;t-&gt;arrayNode(++this-&gt;inode));</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                        this-&gt;cursor = <a class="code" href="classBitTools.html#ac9f995241d437eea2ad426c6bee873a6" title="Builtin function to determine the least significant bit 1 in the word i.">builtinLeast</a>(cnode);</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                }</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                <span class="keywordflow">if</span> (this-&gt;cursor &lt; 0)</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                        this-&gt;cursor = 0;</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        }</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;}</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00522"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d">  522</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a> * <a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d" title="Starts a new iterator for this set.">BitMapDirectlyAddressedSet&lt;T&gt;::newIterator</a>() {</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1BitMapIterator.html" title="An abstract implementation of DirectlyAddressedSet::Iterator.">BitMapIterator</a>(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;}</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00527"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a0020a54ee383f00263d23e79a94a79a7">  527</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d" title="Starts a new iterator for this set.">BitMapDirectlyAddressedSet&lt;T&gt;::newIterator</a>(<a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet&lt;T&gt;</a> * d, <a class="code" href="classFilter.html" title="It provides the ability of filtering the enumeration of a DirectlyAddressedSet.">Filter&lt;T&gt;</a> * f) {</div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1FilteredBitMapIterator.html">FilteredBitMapIterator</a>(<span class="keyword">this</span>, d-&gt;<a class="code" href="classBitMapDirectlyAddressedSet.html#adf904ffa5738d522834a5ef3cebec79d" title="Starts a new iterator for this set.">newIterator</a>(), f);</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;}</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00532"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#adfd95747fa6f3852640b6f291a515d5f">  532</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classDirectlyAddressedSet_1_1Iterator.html" title="A general iterator to scan a DirectlyAddressedSet.">DirectlyAddressedSet::Iterator</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#adfd95747fa6f3852640b6f291a515d5f" title="An Iterator for the complement of the set represented by the object.">BitMapDirectlyAddressedSet&lt;T&gt;::newComplIterator</a>(){</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classBitMapDirectlyAddressedSet_1_1ComplIterator.html">ComplIterator</a>(<span class="keyword">this</span>);</div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;}</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00537"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a304b510e345a395c13f1fdfcbef160e2">  537</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a304b510e345a395c13f1fdfcbef160e2" title="Adds the specified key to the set.">BitMapDirectlyAddressedSet&lt;T&gt;::toSet</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        *<a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i)) |= (1LL &lt;&lt; this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i));</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;}</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#aa084b0ee63e53920d9cfa662feb3ffeb">  542</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#aa084b0ee63e53920d9cfa662feb3ffeb" title="Removes the specified key from the set.">BitMapDirectlyAddressedSet&lt;T&gt;::toCompl</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;        *<a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i)) &amp;= ~(1LL &lt;&lt; this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i));</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;}</div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00547"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a8bacc011da032898e445e0bd41dc5f14">  547</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a8bacc011da032898e445e0bd41dc5f14" title="Swap a element between the set and the complement.">BitMapDirectlyAddressedSet&lt;T&gt;::flip</a>(<span class="keywordtype">long</span> i) {</div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;        *<a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i)) ^= (1LL &lt;&lt; this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i));</div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;}</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00552"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#aae0d63c2cf0f6dbf65657448b14287b5">  552</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#aae0d63c2cf0f6dbf65657448b14287b5" title="Verify if a element of the universe is in the set.">BitMapDirectlyAddressedSet&lt;T&gt;::isInSet</a>(<span class="keywordtype">long</span> i)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;        <span class="keywordflow">return</span> *<a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(i)) &amp;= (1LL &lt;&lt; this-&gt;<a class="code" href="classBitTools.html#a0d23be61dc34b44bbf6aee9d26436ff4">remainder</a>(i)) != 0;</div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;}</div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;</div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00557"></a><span class="lineno"><a class="code" href="classBitMapDirectlyAddressedSet.html#a0b1150e706365effaf3bf4d25f1f88eb">  557</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a0b1150e706365effaf3bf4d25f1f88eb">BitMapDirectlyAddressedSet&lt;T&gt;::show</a>() {</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;        printf(<span class="stringliteral">&quot;vetor \n&quot;</span>);</div>
<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">long</span> i = 0; i &lt; <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>; i++)</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classBitMapDirectlyAddressedSet.html#aae0d63c2cf0f6dbf65657448b14287b5" title="Verify if a element of the universe is in the set.">isInSet</a>(i))</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;                        printf(<span class="stringliteral">&quot;&lt;%lu&gt; &quot;</span>, i);</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        printf(<span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;}</div>
<div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00576"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html">  576</a></span>&#160;<span class="keyword">class </span><a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet</a> : <span class="keyword">public</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>&lt;T&gt; {</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet</a>(<a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">set</span>, <span class="keywordtype">long</span> from, <span class="keywordtype">long</span> to);</div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;<span class="keyword">protected</span>:</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;</div>
<div class="line"><a name="l00581"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">  581</a></span>&#160;        T *     <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">baseT</a>;  <span class="comment">//&lt;! the array of words</span></div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;        T * <a class="code" href="classBitMapDirectlyAddressedSet.html#a83d95bd5e550e2f7dc4eceae0df394c3" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(<span class="keywordtype">long</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;         <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>);</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;         <span class="keyword">virtual</span> ~<a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet</a>();</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * <a class="code" href="classDirectlyAddressedSet.html#a3a433c49b02c6e0f582b2e9ed60fac4e" title="Subset containing the elements between the specified values.">subset</a>(<span class="keywordtype">long</span> from, <span class="keywordtype">long</span> to) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a>* <a class="code" href="classBitMapDirectlyAddressedSet.html#a17a8959c7a96ae90a755f7106ff06093" title="Create a copy of the current object.">clone</a>() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">char</span> * <a class="code" href="classBitMapDirectlyAddressedSet.html#a8e4dd512b40fdada85967c663480878f" title="Create a vector of the elements in the set.">toArray</a>(<span class="keywordtype">long</span>* size);</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a1886374dcac4d2468c71c98aea3f2f06" title="Add all the elements in the universe to the set.">allToSet</a>();</div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a98721fe36c0309b662f0a4053b8c10b3" title="Remove all the elements of the set.">allToCompl</a>();</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a3dc0ff33cdfede898cfd29d10caa0ad6" title="The complement of the current set.">flipAll</a>();</div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a3340fde7ad523ac0c3e121b898be1e3c" title="The cardinality of the set represented by the object.">cardOfSet</a>();</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a86fbb2d9a8fc212f513d0ded3bee67dc" title="The cardinality of the complement of the set represented by the object.">cardOfCompl</a>();</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;         <span class="comment">//DEBUG</span></div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classBitMapDirectlyAddressedSet.html#a0b1150e706365effaf3bf4d25f1f88eb">show</a>();</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;</div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;};</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;</div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00652"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#aaf81c26977ed0dc53176bb2fe5e9d956">  652</a></span>&#160;<a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::ArrayBitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>) : <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>&lt;T&gt;(u) {</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">baseT</a> = <span class="keyword">new</span> T[this-&gt;<a class="code" href="classBitMapDirectlyAddressedSet.html#a1e76fedb462f45a3755792fa5ed656e8">sizeT</a>];</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        memset(<a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">baseT</a>, 0, this-&gt;<a class="code" href="classBitMapDirectlyAddressedSet.html#a1e76fedb462f45a3755792fa5ed656e8">sizeT</a> &lt;&lt; this-&gt;<a class="code" href="classBitTools.html#af3578403638962bf28ffea9d63053eb6" title="logarithmic of the size, in bytes, of a word">logw</a>);</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;}</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00658"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a9c08ad4ea2e3225accba7c20b3473cbd">  658</a></span>&#160;<a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a9c08ad4ea2e3225accba7c20b3473cbd">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::ArrayBitMapDirectlyAddressedSet</a>(<a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a> * <span class="keyword">set</span>, <span class="keywordtype">long</span> from, <span class="keywordtype">long</span> to) : <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>&lt;T&gt;(to-from) {</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">baseT</a> = &amp;<span class="keyword">set</span>-&gt;baseT[this-&gt;<a class="code" href="classBitTools.html#a44f045bd52df3f9a637f227ea499eb77">quotient</a>(from)];</div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;}</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00663"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#aba13a934bec677b4df60ef5093406b15">  663</a></span>&#160;<a class="code" href="classArrayBitMapDirectlyAddressedSet.html#aba13a934bec677b4df60ef5093406b15" title="The simple destructor.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::~ArrayBitMapDirectlyAddressedSet</a>() {</div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;        <span class="keyword">delete</span> baseT;</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;}</div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00668"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#ad3b29bc76c6281e4f2202487056be69a">  668</a></span>&#160;<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#ad3b29bc76c6281e4f2202487056be69a" title="Subset containing the elements between the specified values.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::subset</a>(<span class="keywordtype">long</span> from, <span class="keywordtype">long</span> to)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a>(<span class="keyword">this</span>, from, to);</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;}</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00673"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#abf1119b512a19a19fc6d2efe6b1037cd">  673</a></span>&#160;T * <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#abf1119b512a19a19fc6d2efe6b1037cd" title="Determines the node of this array for enumeration of 1-bits with specified index.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::arrayNode</a>(<span class="keywordtype">long</span> i)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        <span class="keywordflow">return</span> baseT + i;</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;}</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00678"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a841150a59c3949821d092f9a8b1f6060">  678</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a>* <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a841150a59c3949821d092f9a8b1f6060" title="Create a copy of the current object.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::clone</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a>* ret = <span class="keyword">new</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a>(this-&gt;u);</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;        memcpy(ret-&gt;<a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a216d6cd2910c34f80b52174b8fbd6a33">baseT</a>, baseT, this-&gt;sizeT &lt;&lt; this-&gt;logw);</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;}</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00685"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a63d9f3c1ce9750adc4d4f96793a31697">  685</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span> * <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a63d9f3c1ce9750adc4d4f96793a31697" title="Create a vector of the elements in the set.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::toArray</a>(<span class="keywordtype">long</span>* size) {</div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;        T* ret = <span class="keyword">new</span> T[this-&gt;sizeT];</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;        memcpy(ret, baseT, this-&gt;sizeT &lt;&lt; this-&gt;logw);</div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;        <span class="keywordflow">return</span> (<span class="keywordtype">char</span> *) ret;</div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;}</div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;</div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00692"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#abea99d9990d0a7942847f44f60cf960d">  692</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#abea99d9990d0a7942847f44f60cf960d" title="Add all the elements in the universe to the set.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::allToSet</a>() {</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        memset(baseT, 0xFF, this-&gt;sizeT &lt;&lt; this-&gt;logw);</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;}</div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00697"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a10c39854072d23aef7f13a4f59d94a7a">  697</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a10c39854072d23aef7f13a4f59d94a7a" title="Remove all the elements of the set.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::allToCompl</a>() {</div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        memset(baseT, 0, this-&gt;sizeT &lt;&lt; this-&gt;logw);</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;}</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;</div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00702"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a00dea6233fde1a131e0edf98533e3721">  702</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a00dea6233fde1a131e0edf98533e3721" title="The complement of the current set.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::flipAll</a>() {</div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;        T* vec, *lim;</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;        <span class="keywordflow">for</span>(vec = baseT, lim = baseT + this-&gt;sizeT; vec &lt; lim; vec++ ) *vec = ~(*vec);</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;}</div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00708"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a624b0a630461a2f17be4a4e06026cc6f">  708</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a624b0a630461a2f17be4a4e06026cc6f">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::cardOfSet</a>() {</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;        <span class="keywordtype">long</span> ret = 0;</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;        T* vec, *lim;</div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;        <span class="keywordflow">for</span>(vec = baseT, lim = baseT + this-&gt;sizeT; vec &lt; lim; vec++) {</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                ret += this-&gt;builtinCounter(*vec);</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;        }</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;}</div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;</div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00718"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a484336acf4a9bc3da6abfff9a2b78102">  718</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">long</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a484336acf4a9bc3da6abfff9a2b78102">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::cardOfCompl</a>(){</div>
<div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;        <span class="keywordtype">long</span> ret;</div>
<div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;        T* vec, *lim;</div>
<div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;        <span class="keywordflow">for</span>(vec = baseT, lim = baseT + this-&gt;sizeT; vec &lt; lim; vec++){</div>
<div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;                ret += this-&gt;builtinCounter(~*vec);</div>
<div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;        }</div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        <span class="keywordflow">return</span> ret;</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;}</div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00728"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a747262b672966eb77a2d7fd375682772">  728</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html#a747262b672966eb77a2d7fd375682772">ArrayBitMapDirectlyAddressedSet&lt;T&gt;::show</a>() {</div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;        printf(<span class="stringliteral">&quot;vetor \n&quot;</span>);</div>
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        <span class="keywordtype">long</span> i;</div>
<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;        <span class="keywordflow">for</span>(i = 0; i &lt; this-&gt;u; i++)</div>
<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;                <span class="keywordflow">if</span> (this-&gt;isInSet(i))</div>
<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;                        printf(<span class="stringliteral">&quot;&lt;%lu&gt; &quot;</span>, i);</div>
<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        printf(<span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;}</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00748"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html">  748</a></span>&#160;<span class="keyword">class </span><a class="code" href="classHashBitMapDirectlyAddressedSet.html">HashBitMapDirectlyAddressedSet</a> : <span class="keyword">public</span> <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>&lt;T&gt; {</div>
<div class="line"><a name="l00749"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#af376b6b7cd23f69146aa1cba3dca5ca9">  749</a></span>&#160;        <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html">HashBitMapDirectlyAddressedSetFactory</a>;</div>
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;</div>
<div class="line"><a name="l00751"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#af778d904491524fabc01ecaa952a0b20">  751</a></span>&#160;        T *                             <a class="code" href="classHashBitMapDirectlyAddressedSet.html#af778d904491524fabc01ecaa952a0b20">baseT</a>;  <span class="comment">//&lt;! the array of nodes; it includes the node of index 0, even if it is empty, since it is required by restart() method</span></div>
<div class="line"><a name="l00752"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#aa1248adb4519703ec1a154672a97c379">  752</a></span>&#160;        <a class="code" href="classHash.html">Hash&lt;long&gt;</a> *    <a class="code" href="classHashBitMapDirectlyAddressedSet.html#aa1248adb4519703ec1a154672a97c379" title="function">hash</a>;   </div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;        T * <a class="code" href="classHashBitMapDirectlyAddressedSet.html#ab819fab558d3ff610147626c0d8a9d71" title="Determines the node of this array for enumeration of 1-bits with specified index.">arrayNode</a>(<span class="keywordtype">long</span> i) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;         <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a750b2db98517e95dffa3d48ced8aaa31">HashBitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> <a class="code" href="classDirectlyAddressedSet.html#a72575479afb5dd067267fa92913bc80a" title="the size of the universe">u</a>, <span class="keyword">const</span> T * s, <span class="keyword">const</span> <span class="keywordtype">long</span> n);</div>
<div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;</div>
<div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;         <span class="keyword">virtual</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a55000953a96cabf5eb70bd4ed6b4f313">~HashBitMapDirectlyAddressedSet</a>();</div>
<div class="line"><a name="l00764"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#aa59c271b8173efe81e481923dd3756a9">  764</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#aa59c271b8173efe81e481923dd3756a9" title="Not implemented since this set is static.">toSet</a>(<span class="keywordtype">long</span> i) {};</div>
<div class="line"><a name="l00770"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a1f314b97e198be288ee27d3e030086c2">  770</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a1f314b97e198be288ee27d3e030086c2" title="Not implemented since this set is static.">toCompl</a>(<span class="keywordtype">long</span> i) {};</div>
<div class="line"><a name="l00776"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a2e4cfe9c57b5366d148b5ab106986759">  776</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a2e4cfe9c57b5366d148b5ab106986759" title="Not implemented since this set is static.">flip</a>(<span class="keywordtype">long</span> i) {};</div>
<div class="line"><a name="l00782"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a9ef5943ad42f0c075dbc64576aacf605">  782</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a9ef5943ad42f0c075dbc64576aacf605" title="Not implemented since this set is static.">allToSet</a>() {};</div>
<div class="line"><a name="l00788"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#ad2fa35f0f255c7ab7c996ec3aacb1aca">  788</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#ad2fa35f0f255c7ab7c996ec3aacb1aca" title="Not implemented since this set is static.">allToCompl</a>() {};</div>
<div class="line"><a name="l00794"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a4eff7810d15044ce6d63dafc5aaf0d64">  794</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a4eff7810d15044ce6d63dafc5aaf0d64" title="Not implemented since this set is static.">flipAll</a>() {};</div>
<div class="line"><a name="l00800"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#aac1fe838a24ea2e265aca01363505344">  800</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#aac1fe838a24ea2e265aca01363505344" title="Not implemented since this set is static.">addAll</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v) {};</div>
<div class="line"><a name="l00806"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a16e9a93a4258b96bce9888dc7ac299f4">  806</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a16e9a93a4258b96bce9888dc7ac299f4" title="Not implemented since this set is static.">symDiff</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v) {};</div>
<div class="line"><a name="l00812"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#ac2a0a4c401b1309a3f40b061e245f2dc">  812</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#ac2a0a4c401b1309a3f40b061e245f2dc" title="Not implemented since this set is static.">removeAll</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v) {};</div>
<div class="line"><a name="l00818"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a3a6fb09c800637868cc8fe0d92d839ce">  818</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a3a6fb09c800637868cc8fe0d92d839ce" title="Not implemented since this set is static.">retainAll</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v) {};</div>
<div class="line"><a name="l00824"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a93c52f072e3e1106697084f68c525988">  824</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a93c52f072e3e1106697084f68c525988" title="Not implemented since this set is static.">unionOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w) {};</div>
<div class="line"><a name="l00830"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#aab9895debd859e323c89b005b4b76d4b">  830</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#aab9895debd859e323c89b005b4b76d4b" title="Not implemented since this set is static.">symDiffOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w) {};</div>
<div class="line"><a name="l00836"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a63085c70d88fb118bdc85b98d86d3804">  836</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a63085c70d88fb118bdc85b98d86d3804" title="Not implemented since this set is static.">intersectOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w) {};</div>
<div class="line"><a name="l00842"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a11d9d6369c29f5ca084f25c4b5b33e36">  842</a></span>&#160;         <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a11d9d6369c29f5ca084f25c4b5b33e36" title="Not implemented since this set is static.">diffOf</a>(<a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * v, <a class="code" href="classDirectlyAddressedSet.html" title="A static or dynamic set of elements with direct addressing.">DirectlyAddressedSet</a> * w) {};</div>
<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;};</div>
<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;</div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00846"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#a750b2db98517e95dffa3d48ced8aaa31">  846</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html#a750b2db98517e95dffa3d48ced8aaa31">HashBitMapDirectlyAddressedSet&lt;T&gt;::HashBitMapDirectlyAddressedSet</a>(<span class="keywordtype">long</span> u, <span class="keyword">const</span> T * s, <span class="keyword">const</span> <span class="keywordtype">long</span> n) : <a class="code" href="classBitMapDirectlyAddressedSet.html" title="A DirectlyAddressedSet implemented with an array of nodes, each node corresponding to a word of the s...">BitMapDirectlyAddressedSet</a>&lt;T&gt;(u) {</div>
<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;}</div>
<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;</div>
<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00850"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSet.html#ab819fab558d3ff610147626c0d8a9d71">  850</a></span>&#160;<span class="keyword">inline</span> T * <a class="code" href="classHashBitMapDirectlyAddressedSet.html#ab819fab558d3ff610147626c0d8a9d71" title="Determines the node of this array for enumeration of 1-bits with specified index.">HashBitMapDirectlyAddressedSet&lt;T&gt;::arrayNode</a>(<span class="keywordtype">long</span> i)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <span class="keywordflow">return</span> baseT + hash-&gt;search(&amp;i);</div>
<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;}</div>
<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;</div>
<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00855"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html">  855</a></span>&#160;<span class="keyword">class </span><a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html">ArrayBitMapDirectlyAddressedSetFactory</a> : <span class="keyword">public</span> <a class="code" href="classFactory.html">Factory</a>&lt;ArrayBitMapDirectlyAddressedSet&lt;T&gt; &gt; {</div>
<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;</div>
<div class="line"><a name="l00858"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html#a6d40116caf50971dfcca20681993fefc">  858</a></span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a> * <a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html#a6d40116caf50971dfcca20681993fefc">newInstance</a>(<span class="keywordtype">long</span> n) {</div>
<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a>(n);</div>
<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;        };</div>
<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;</div>
<div class="line"><a name="l00862"></a><span class="lineno"><a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html#ade2edfe21bed9ad3a228bd274866bc5c">  862</a></span>&#160;        <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a> * <a class="code" href="classArrayBitMapDirectlyAddressedSetFactory.html#ade2edfe21bed9ad3a228bd274866bc5c">newInstance</a>(<span class="keywordtype">long</span> n, <span class="keywordtype">void</span> * handle) {</div>
<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classArrayBitMapDirectlyAddressedSet.html" title="A BitMapDirectlyAddressedSet implemented with an array of words.">ArrayBitMapDirectlyAddressedSet&lt;T&gt;</a>(n);</div>
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        };</div>
<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div>
<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;};</div>
<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;</div>
<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00869"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html">  869</a></span>&#160;<span class="keyword">class </span><a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html">HashBitMapDirectlyAddressedSetFactory</a> : <span class="keyword">public</span> <a class="code" href="classFactory.html">Factory</a>&lt;HashBitMapDirectlyAddressedSet&lt;T&gt; &gt; {</div>
<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;</div>
<div class="line"><a name="l00872"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html#ab71a6b87568ff2e277500687b653cf0c">  872</a></span>&#160;        <a class="code" href="classHashBitMapDirectlyAddressedSet.html">HashBitMapDirectlyAddressedSet&lt;T&gt;</a> * <a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html#ab71a6b87568ff2e277500687b653cf0c">newInstance</a>(<span class="keywordtype">long</span> n) {</div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html">HashBitMapDirectlyAddressedSet&lt;T&gt;</a>(n);</div>
<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;        };</div>
<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;</div>
<div class="line"><a name="l00876"></a><span class="lineno"><a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html#a1ab8c9112e4989ea4736e71f47f5530e">  876</a></span>&#160;        <a class="code" href="classHashBitMapDirectlyAddressedSet.html">HashBitMapDirectlyAddressedSet&lt;T&gt;</a> * <a class="code" href="classHashBitMapDirectlyAddressedSetFactory.html#a1ab8c9112e4989ea4736e71f47f5530e">newInstance</a>(<span class="keywordtype">long</span> n, <span class="keywordtype">void</span> * handle) {</div>
<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classHashBitMapDirectlyAddressedSet.html">HashBitMapDirectlyAddressedSet&lt;T&gt;</a>(n);</div>
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        };</div>
<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;</div>
<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;};</div>
<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;</div>
<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* BITMAPDIRECTLYADDRESSEDSET_H_ */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Nov 26 2012 17:06:45 for Data Structures for Sets and Graphs by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>
